<script>
//已知有平面坐标系的十组坐标点[[x1,y1], [x2,y2], ……, [x10,y10]]，每次找出距离最近的两组坐标进行合并，合并后的坐标取两者平均值，即[(x1+x2)/2 , (y1+y2)/2]（如有小数统一向下取整，即2.4取2），合并后的新坐标作为二叉树根节点，原坐标取X值较小的作为左节点，另一个为右节点
//合并后的新坐标和余下没有在二叉树中的原始坐标构成新数组[[(x1+x2)/2, (y1+y2)/2], [x3,y3],[x4, y4] ……, [x10,y10]]继续重复上述步骤，直至二叉树构建完成，最后按前序优先输出二叉树的数组

let arr = [[3,5], [4,6], [7,3], [9,4]]

let root = null
function Node(value){
    this.value = value
    this.left = null
    this.right = null
}
function foo(arr){
    let min = Infinity
    let flagI = 0
    let flagJ = 0
    //找出距离最小的两个点
    for(let i=0; i<arr.length; i++){
        for(let j=i+1; j<arr.length; j++){
            var dis = Math.pow(arr[i][0]-arr[j][0], 2) + Math.pow(arr[i][1]-arr[j][1], 2)
            if(dis < min){
                min = dis
                flagI = i
                flagJ = j
            }
        }
    }
    //获取中点
    let mid = [Math.floor((arr[flagI][0]+arr[flagJ][0])/2),
                Math.floor((arr[flagI][1]+arr[flagJ][1])/2)
               ]
    let rootNode = new Node(root)
    if(arr[flagI][0] < arr[flagJ][0]){
        rootNode.left = new Node(arr[flagI])
        rootNode.right = new Node(arr[flagJ])
    }else{
        rootNode.left = new Node(arr[flagJ])
        rootNode.right = new Node(arr[flagI])
    }
    if(!root){
        root = rootNode
    }else{
        
    }

    arr.push(mid)
    arr.splice(flagI, 1)
    arr.splice(flagJ, 1)
    
    
}

</script>